#include <OneWire.h>
#include <DallasTemperature.h>

#define MIN_TEMP -10

#define MAX_TEMP 40


// ------- FUNCIONES  ----------------------------------

// Setup a oneWire instance to communicate with any OneWire devices 
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

void setupTemperatureSensor()
{
  // Start up the library
  Serial << F("Inicializando sensor temperaturas...\n");
  sensors.begin();
  // En el arranque suele dar falsas mediciones altas, así que dejo una pequeña pausa 
  // y tomo la primera medición (que a veces da mal) para que no salte la alarma
  // en falso según se conecta 
  delay(1000); 
  float temp = getTemperature();
  Serial << F("Temperature for device 1 at startup is: ");
  Serial.println(temp); 
}

void setTemperatureLedStatus(int led1, int led2, int led3, int led4, int led5) 
{
  digitalWrite(pinLed1, led1);
  digitalWrite(pinLed2, led2);
  digitalWrite(pinLed3, led3);
  digitalWrite(pinLed4, led4);
  digitalWrite(pinLed5, led5);
}

float getTemperature()
{
  // call sensors.requestTemperatures() to issue a global temperature
  // request to ALL devices on the bus
  sensors.requestTemperatures(); // Send the command to get temperatures
  float temp = sensors.getTempCByIndex(0);// Why "byIndex"? 
  // You can have more than one IC on the same bus. 
  // 0 refers to the first IC on the wire
  return temp;
}

double getAlarmTempLevel()
{
  //Primero leemos el potenciómetro
  double tempMin = analogRead(thresholdLevelPin);
  //Mapeamos los valores de [0,1023] a valores de [-50,600]
  //Y lo dividimos entre 10 para darle un decimal
  tempMin = map(tempMin, 0, 1023, MIN_TEMP * 10 , MAX_TEMP * 10) / 10.0;
  return tempMin;
}





